package cn.com.doone.common.uc.web.dao;

import java.util.List;
import java.util.Map;

public interface UserGroupMemberDao {

	/**
	 * 添加组用户
	 * @param userGroupMember
	 * @return
	 * @throws Exception
	 */
	public int addUserGroupMember(Map<String,Object> paramsMap) throws Exception;
	
	/**
	 * 批量添加组用户
	 * @param list
	 * @return
	 */
	public int batchAddUserGroupMember(List<Map<String,Object>> list);
	
	/**
	 * 删除组用户
	 * @param userGroupMember
	 * @return
	 * @throws Exception
	 */
	public int deleteUserGroupMember(Map<String,Object> paramsMap) throws Exception;
	
	/**
	 * 更新用户组关系
	 * @param paramsMap
	 * @return
	 */
	public int updateUserGroupMember(Map<String,Object> paramsMap);
	
	/**
	 * 根据组批量删除组用户
	 * @param groupList
	 * @return
	 */
	public int batchDeleteUserGroupMemberByGroup(List<Map<String,Object>> groupList);
	
	/**
	 * 查询是否有组用户
	 * @param userGroupMember
	 * @return
	 */
	public long countGroupMember(Map<String,Object> paramsMap);
	
	/**
	 * 查询未更新的组成员
	 * @param groupCode
	 * @param updateTime
	 * @return
	 */
	public List<Map<String,Object>> queryGroupMemberByTenantAndUpdateTime(Map<String,Object> params);
	
	/**
	 * 根据顶级组code更新组用户关系
	 * @param paramsMap
	 * @return
	 */
	public int updateUserGroupMemberByGroupCode(Map<String,Object> paramsMap);
	
	/**
	 * 根据用户ID统计是否有组用户关系
	 * @param paramsMap
	 * @return
	 */
	public long countUserGroupMemberByUserInfoId(Map<String,Object> paramsMap);
	
	/**
	 * 统计用户组关系是否存在
	 * @param paramsMap
	 * @return
	 */
	public long countUserGroupMember(Map<String,Object> paramsMap);
	
	/**
	 * 根据组集合查询用户集合
	 * @param groupList
	 * @return
	 */
	public List<Map<String,Object>> queryUserByGroupList(List<Map<String,Object>> groupList);
	
	/**
	 * 根据组ID查询对应的组信息
	 * @param paramsMap
	 * @return
	 */
	public List<Map<String,Object>> queryUserListByGroupId(Map<String,Object> paramsMap);
	
	/**
	 * 根据组ID更新用户关系
	 * @param paramsMap
	 * @return
	 */
	public int deleteUserGroupMemberByGroupId(Map<String,Object> paramsMap);
	
	/**
	 * 查询组成员
	 * @param paramsMap
	 * @return
	 */
	public List<Map<String,Object>> queryUserGroupMemberList(Map<String,Object> paramsMap);
	
	/**
	 * 根据用户ID查询组关系
	 * @param paramsMap
	 * @return
	 */
	public List<Map<String,Object>> queryUserGroupMemberByUserInfoId(Map<String,Object> paramsMap);
	
	/**
	 * 根据用户ID删除组关系
	 * @param userInfoId
	 * @return
	 */
	public int deleteUserGroupMemberByUserInfoId(Map<String,Object> paramsMap);
}
